跳到主要内容

动画

  • 需要version>=5

效果常量

    AnimLinear=1
AnimEaseIn=2
AnimEaseOut
AnimEaseInOut
AnimEaseInCubic
AnimEaseOutCubic
AnimEaseInOutCubic
AnimEaseInQuart
AnimEaseOutQuart
AnimEaseInOutQuart
AnimEaseInQuint
AnimEaseOutQuint
AnimEaseInOutQuint
AnimEaseInSine
AnimEaseOutSine
AnimEaseInOutSine
AnimEaseInExpo
AnimEaseOutExpo
AnimEaseInOutExpo
AnimEaseInCirc
AnimEaseOutCirc
AnimEaseInOutCirc
AnimEaseInBack
AnimEaseOutBack
AnimEaseInOutBack
AnimEaseInElastic
AnimEaseOutElastic
AnimEaseInOutElastic
AnimEaseInBounce
AnimEaseOutBounce
AnimEaseInOutBounce

anim_effect

anim_effect(effect, x)

根据当前x,返回按照指定的动画类型函数计算的数值。x通常采用[0,1.0]

anim_effect(AnimEaseInBounce,curtick/allticks)

anim_calc

anim_effect(effect, apos,zpos,alltick,curtick)

根据当前curtick,计算动画位置。返回当前tick对应的pos

  • effect: 选择动画效果函数
  • apos: 动画起始位置
  • zpos: 动画结束位置
  • alltick: 动画总时长
  • curtick: 当前时长

展示所有动画曲线的例子

coloX-4
name: test

__lua__

local animeffect={
'AnimLinear',
'AnimEaseIn',
'AnimEaseOut',
'AnimEaseInOut',
'AnimEaseInCubic',
'AnimEaseOutCubic',
'AnimEaseInOutCubic',
'AnimEaseInQuart',
'AnimEaseOutQuart',
'AnimEaseInOutQuart',
'AnimEaseInQuint',
'AnimEaseOutQuint',
'AnimEaseInOutQuint',
'AnimEaseInSine',
'AnimEaseOutSine',
'AnimEaseInOutSine',
'AnimEaseInExpo',
'AnimEaseOutExpo',
'AnimEaseInOutExpo',
'AnimEaseInCirc',
'AnimEaseOutCirc',
'AnimEaseInOutCirc',
'AnimEaseInBack',
'AnimEaseOutBack',
'AnimEaseInOutBack',
'AnimEaseInElastic',
'AnimEaseOutElastic',
'AnimEaseInOutElastic',
'AnimEaseInBounce',
'AnimEaseOutBounce',
'AnimEaseInOutBounce',
}

local cureffect=1

function preparebg(effname)
print(effname,120-8*#effname/2,120-60,white,0,8)
line(0,120-50,240,120-50,white)
line(0,120+50,240,120+50,white)
color(red)
line(40,120+50,40,120+50)
for i=0,160 do
line(40+i,anim_calc(_G[effname],120+50,120-50,160,i))
end
end
preparebg(animeffect[cureffect])
function _draw()
if btnp(4) then
cls(0)
preparebg(animeffect[cureffect])
cureffect=cureffect+1
if cureffect>#animeffect then
cureffect=1
end
end
end